What is lodash.curry?
The lodash.curry npm package provides a function that makes it easy to partially apply arguments to a function in a way that is both associative and commutative. This means that you can pass arguments to a curried function one at a time or multiple at once, and in any order, until all arguments have been provided and the original function is executed.
What are lodash.curry's main functionalities?
Currying Functions
Currying a function allows you to create new functions by partially applying some arguments. In this example, we curry the 'add' function and create a new function 'add5' that has the first argument fixed to 5.
const _ = require('lodash.curry');
const add = (a, b, c) => a + b + c;
const curriedAdd = _.curry(add);
const add5 = curriedAdd(5);
console.log(add5(10, 15)); // outputs 30
Associative Currying
Curried functions can be called with arguments one at a time (associative property). This means that the grouping of arguments is irrelevant; the result will be the same.
const _ = require('lodash.curry');
const add = (a, b, c) => a + b + c;
const curriedAdd = _.curry(add);
console.log(curriedAdd(5)(10)(15)); // outputs 30
console.log(curriedAdd(5, 10)(15)); // also outputs 30
console.log(curriedAdd(5)(10, 15)); // also outputs 30
Placeholder Arguments
Lodash.curry supports the use of placeholders. This allows you to skip arguments and provide them later. In this example, we create a function that has the first and third arguments fixed, and the second argument can be provided later.
const _ = require('lodash.curry');
const add = (a, b, c) => a + b + c;
const curriedAdd = _.curry(add);
const add5And = curriedAdd(5, _);
console.log(add5And(10, 15)); // outputs 30
Other packages similar to lodash.curry
ramda
Ramda is a functional programming library that also provides a curry function. It is similar to lodash.curry but is designed with a more functional programming-oriented API and immutability in mind.
curry
This is a standalone package that provides currying functionality. It is similar to lodash.curry but does not have the additional utility functions that lodash offers.
curriable
Curriable is a library that offers currying with support for placeholders, similar to lodash.curry. It focuses on being lightweight and having a minimalistic API.
lodash.curry v4.1.1
The lodash method _.curry
exported as a Node.js module.
Installation
Using npm:
$ {sudo -H} npm i -g npm
$ npm i --save lodash.curry
In Node.js:
var curry = require('lodash.curry');
See the documentation or package source for more details.